package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import vista.VentanaRegistrarObsequioModeloTabla;
import vista.VentanaRegistrarRegalo;


import modelo.Evento;
import modelo.EventoDAO;
import modelo.Invitado;
import modelo.InvitadoDAO;
import modelo.Obsequio;
import modelo.ObsequioDAO;
import modelo.Organizacion;
import modelo.Producto;
import modelo.ProductoDAO;

public class ControladorVentanaRegistrarRegalo implements ActionListener {
	private VentanaRegistrarRegalo ventanaRegistrarRegalo;
	private Organizacion organizacion;
	private Evento evento;
	private Producto producto;
	private Obsequio onsequio;
	ArrayList<Producto> listaObsequio = new ArrayList();
	
	private EventoDAO eventoDao;
	private InvitadoDAO invitadoDao;
	private ObsequioDAO obsequioDao;
	private String codigoEvento;
	
	
	public ControladorVentanaRegistrarRegalo(Organizacion organizacion) {
		
		ventanaRegistrarRegalo =  new VentanaRegistrarRegalo();
		ventanaRegistrarRegalo.setLocationRelativeTo(null);
		ventanaRegistrarRegalo.setVisible(true);	
		ventanaRegistrarRegalo.agregarListener(this);
		this.organizacion = organizacion;
		eventoDao = new EventoDAO();
		
		invitadoDao = new InvitadoDAO();
		obsequioDao = new ObsequioDAO();
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		int indice;
		int indiceCedula;
		if(e.getActionCommand().equals("Buscar Evento")){
			
			if(ventanaRegistrarRegalo.getTxtCodigoEvento().equalsIgnoreCase("")){
			
				this.ventanaRegistrarRegalo.mostrarMensaje("Debe Ingresar el codigo del evento a solicitar");
			
			} else {
				
				//indice = this.organizacion.buscarEvento(ventanaRegistrarRegalo.getTxtCodigoEvento());
			
				codigoEvento = ventanaRegistrarRegalo.getTxtCodigoEvento();
				//if (indice < 0){
				
			    eventoDao = new EventoDAO();
			   evento = eventoDao.buscarEvento(ventanaRegistrarRegalo.getTxtCodigoEvento());
			
			   if (evento == null) {
					
					this.ventanaRegistrarRegalo.mostrarMensaje("Evento no Existe");					
				
				} else {
					
					//	Evento Exite
					
					//evento = this.organizacion.getUnaEvento(indice);
					
					//this.cargarListado();
					
					ventanaRegistrarRegalo.visibleInvitado(true);	
					ventanaRegistrarRegalo.habilitarCodigo(false);
					ventanaRegistrarRegalo.habilitarCedula(true);
			
				}
				
			}
		} else if(e.getActionCommand().equals("Buscar Invitado")){
			
			if(ventanaRegistrarRegalo.getTxtCedula().equals("")){
				
				this.ventanaRegistrarRegalo.mostrarMensaje("Debe Ingresar la cedula del invitado");
			
			} else {
			
				
			//	indiceCedula = evento.buscarInvitado(ventanaRegistrarRegalo.getTxtCedula());
				
				
				String c = ventanaRegistrarRegalo.getTxtCedula();
						
				String cedu	= invitadoDao.buscarInvitadoEnEvento(c, codigoEvento);
				
				ventanaRegistrarRegalo.mostrarMensaje(cedu);
			//	if(indiceCedula < 0){
				
			if (cedu == "") {
					
				ventanaRegistrarRegalo.mostrarMensaje("El invitado no está en este evento");
				
				} else {
					
					ventanaRegistrarRegalo.habilitarCedula(false);
			
			//		Invitado invitado = evento.getInvitados().get(indiceCedula);
					
					invitadoDao = new InvitadoDAO();
					Invitado invitado = invitadoDao.buscarInvitado(cedu);
					
					//necesito registrar el invitadoobsequio
					
					ventanaRegistrarRegalo.visibleCombos(true);
					
					this.mostrarInvitado(invitado);
					
					//aquii morire  necesito imprimir los que no se hayan adquirido:(
					//ventanaRegistrarRegalo.setObsequios(evento.listaSinOsequio());
					
					eventoDao = new EventoDAO();
					ArrayList<String> lista = eventoDao.consultarRegalosSinObsequiar(ventanaRegistrarRegalo.getTxtCodigoEvento());
					
					ventanaRegistrarRegalo.setLista(lista);
				
				
				
				}
			}
			
		} else if(e.getActionCommand().equals("Registrar")){
			
			ArrayList<Producto> listaRegalos = new ArrayList();
			ArrayList<Producto> listaObsequios = new ArrayList();
			Obsequio obsequio;
			obsequio = new Obsequio();
			
			eventoDao = new EventoDAO();
			ArrayList<String> lista = eventoDao.consultarRegalosSinObsequiar(ventanaRegistrarRegalo.getTxtCodigoEvento());
			
			
			//if (evento.listaSinOsequio().isEmpty()){
			if (lista.size() <= 0) {
				
				ventanaRegistrarRegalo.mostrarMensaje("No hay mas obsequios por registrar");
				
			} else {
				
				String codigo, descripcion, cedula, nombre;
				int posicion;
				float precio;
				Producto producto;
				
				//indice = evento.getListaobsequio().buscarObsequio(ventanaRegistrarRegalo.getCmbProducto());
				
				//producto = evento.getListaobsequio().getListaObsequios().get(indice);
				
				ventanaRegistrarRegalo.mostrarMensaje("aqyuiii");
				ProductoDAO productoDao = new ProductoDAO();
				//producto = productoDao.consultarProducto(ventanaRegistrarRegalo.getCmbProducto());
				producto = productoDao.producto(ventanaRegistrarRegalo.getCmbProducto());
				
				ventanaRegistrarRegalo.mostrarMensaje("luego de registrar produ");
				
				codigo = producto.getCodigo();
				descripcion = producto.getNombre();
				precio = producto.getPrecio();
				cedula = ventanaRegistrarRegalo.getTxtCedula();
				//posicion = evento.buscarInvitado(cedula);
				
			//	nombre = evento.getInvitados().get(posicion).getNombre();
			//	nombre += " " + evento.getInvitados().get(posicion).getApellido();
				
				obsequio.setStatus("true");
				obsequio.setCodigo(codigo);
				obsequio.setDescripcion(descripcion);
				obsequio.setPrecio(precio);
				obsequio.setCedulaInvitado(cedula);
				obsequio.setCodigoEvento(codigoEvento);
				
				//obsequio = new Obsequio (codigo, descripcion, cedula, precio, "true");

				ObsequioDAO osequioDao = new ObsequioDAO();
				obsequioDao.registrarObsequio(obsequio);
				
				//evento.AgregarRegalos(obsequio);
				
				
				//ventanaRegistrarRegalo.setObsequios(evento.listaSinOsequio());
				
				eventoDao = new EventoDAO();
				List<String> listaa = eventoDao.consultarRegalosSinObsequiar(ventanaRegistrarRegalo.getTxtCodigoEvento());
				ventanaRegistrarRegalo.setLista(lista);

			//	evento.registrarObsequioInvitado(ventanaRegistrarRegalo.getTxtCedula(), producto);
				
				cargarListado();
			}
	
		} else if(e.getActionCommand().equals("Limpiar")){
			
			ventanaRegistrarRegalo.visibleInvitado(false);	
			ventanaRegistrarRegalo.habilitarCodigo(true);
			ventanaRegistrarRegalo.visibleCombos(false);
			ventanaRegistrarRegalo.limpiarDatos();
			ArrayList<Producto> listaLimpia = new ArrayList();
			ventanaRegistrarRegalo.setListado(new VentanaRegistrarObsequioModeloTabla(listaLimpia));
		}
	}

	private void mostrarInvitado(Invitado invitado) {
		
		ventanaRegistrarRegalo.setValoresInvitado(invitado.getNombre(), invitado.getApellido());
		
	}

	private void cargarListado() {
		
		//no va
		ArrayList<Producto> listaObsequio; // = evento.listaSinOsequio();
		
		eventoDao = new EventoDAO();
		ArrayList<String> lista = eventoDao.consultarRegalosSinObsequiar(ventanaRegistrarRegalo.getTxtCodigoEvento());
		
		ventanaRegistrarRegalo.setLista(lista);
		
		
		ProductoDAO productoDao =new ProductoDAO();
		
		listaObsequio = productoDao.productoSettear(lista);
		
		ventanaRegistrarRegalo.setListado(new VentanaRegistrarObsequioModeloTabla(listaObsequio));
		
	}
		
}
